package com.qili.service.it;

import com.qili.entity.base.Col;
import com.qili.entity.supervisor.SupervisorFile;
import com.qili.entity.supervisor.SupervisorFileTemp;
import com.qili.entity.supervisor.dto.SupervisorProjectFromsDTO;
import com.qili.util.ReType;
import org.springframework.ui.Model;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author liuyang
 * @date 2021/4/1
 * @description
 */
public interface FormBaseService {

    /**
     * 处理临时文件
     * 1.通过前端发送过来的id查询临时数据表数据
     * 2.获取临时文件
     * 3.根据不同表单类型生成正式文件路径
     * 4.移动文件
     * 5.复制临时表数据到正式表
     */
    File moveTempFile(SupervisorFileTemp tempFile, SupervisorProjectFromsDTO formDto);

    /**
     * 保存表单数据
     * @param forms
     */
    void saveFormData(SupervisorProjectFromsDTO forms, boolean ifNew);

    /**
     * 保存表单文件
     * @param forms
     */
    void saveFormFile(SupervisorProjectFromsDTO forms, boolean ifNew);

    /**
     * 获取表单数据
     * @param formTypeCode
     * @param formDto
     */
    void getFormData(String formTypeCode, SupervisorProjectFromsDTO formDto, Model model);

    String getFormCenterFileId(String dicId);

    String getFormFilePath(SupervisorFile file,String formTypeCode,String formFileTypeCode);

    /**
     * 获取表单对应的上传的文件并设置到formDto里面
     * @param formTypeCode
     * @param formDto
     */
    void setFormFiles(String formTypeCode, SupervisorProjectFromsDTO formDto);

    /**
     * 根据表单类型编码获取台账导出的Excel文件名称
     * @param formTypeCode
     * @return
     */
    String getExportExcelName(String formTypeCode);

    /**
     * 根据表单类型编码获取统计导出的Excel文件名称
     * @param formTypeCode
     * @return
     */
    String getExportExcelName(String formTypeCode, SupervisorProjectFromsDTO formDto, String index);

    ReType selectFormStatisticsTableData(String formTypeCode, SupervisorProjectFromsDTO formInfo, String index, String page, String limit);

    /**
     * 获取统计表头
     * @param formTypeCode
     * @param formInfo
     * @param index
     * @return
     */
    List<Col> getFormStatisticstableHead(String formTypeCode, SupervisorProjectFromsDTO formInfo, String index);


}
